djbuch.kapitel_13
Class DJCacheDocument

java.lang.Object
  |
  +--djbuch.kapitel_13.DJCacheDocument

public class DJCacheDocument
extends java.lang.Object

Ein DJCacheDocument ist ein Nachbau eines lotus.domino.Document und verhält sich weitestgehend wie dieses, insbesondere für die Methoden getItemValueString, getItemValueInteger und getItemValueDouble. Es basiert lediglich auf Java Mitteln und ist unabhängig von einer Domino Session. Hierdurch wird es möglich ein solches Document speicherresident (z.B. durch einen Singleton) vorzuhalten. Dies ist insbesondere für häufig benötigte Konfigurationsdokumente interessant oder für Dokumente, deren Erzeugung teuer ist. Durch die Nachahmung der Mimik des lotus.domino.Document kann in Anwendungen sehr leicht das lotus.domino.Document durch ein DJCacheDocument ausgetauscht werden. Allerdings werden keine Sicherheitsfunktionen von Domino implementiert. Insbesondere werden verschlüsselte Felder eines Domino Document unverschlüsselt gespeichert.

Author:
Thomas ekert
See Also:
lotus.domino.Document

Constructor Summary
DJCacheDocument(Document doc)
          Erstellt aus einem lotus.domino.Document ein DJCacheDocument
 
Method Summary
 void appendItemValue(java.lang.String fieldName)
          Erstellt ein Feld (feldname) falls es nicht existiert.
 void appendItemValue(java.lang.String fieldName, double value)
          Fügt dem Feld (fieldname) einen zusätzlichen Wert (value) hinzu.
 void appendItemValue(java.lang.String fieldName, int value)
          Fügt dem Feld (fieldname) einen zusätzlichen Wert (value) hinzu.
 void appendItemValue(java.lang.String fieldName, java.lang.Object value)
          Fügt dem Feld (fieldname) einen zusätzlichen Wert (value) hinzu.
 Document createDocument(Database db)
          Erzeugt ein neues lotus.domino.Document mit den Items aus dem DJCacheDocuemnt.
 java.util.Vector getAllItemNames()
          Gibt alle Item Namen des DJCacheDocument zurück.
 Document getDocument(Session session)
          Lädt das Ursprüngliche lotus.domino.Document aus der Datenbank
 java.util.Vector getItemValue(java.lang.String fieldName)
          Liefert den Inhalt eines Feldes (fieldname) das mehrere Werte enthält oder einen einzelnen Wert als Element eines neuen Vectors.
 java.util.Vector getItemValueDateTimeArray(java.lang.String fieldName, Session session)
          Lädt einen gespeicherten Vector und versucht die enthaltenen Werte in DateTime umzuwandeln.
 double getItemValueDouble(java.lang.String fieldName)
          Liefert den Inhalt eine Feldes (fieldname) als double.
 int getItemValueInteger(java.lang.String fieldName)
          Liefert den Inhalt eine Feldes (fieldname) als int.
 java.lang.String getItemValueString(java.lang.String fieldName)
          Liefert den Inhalt eine Feldes (fieldname) als String.
 Database getParentDatabase(Session session)
          Liefert die Datenbank in der sich das ursprüngliche lotus.domino.Document befand.
 java.lang.String getParentDatabaseFileName()
          Liefert den Dantenbanknamen der Datenbank in der sich das ursprüngliche lotus.domino.Document befand.
 java.lang.String getParentDatabaseFilePath()
          Liefert den Dantenbankdateipfad der Datenbank in der sich das ursprüngliche lotus.domino.Document befand.
 java.lang.String getParentDocumentUNID()
          Liefert die DocumentUNID eines optional vorhandenen Mutterdokuments desjenigen Document aus dem das DJCacheDocument ursprünglich erzeugt wurde.
 java.lang.String getType(java.lang.String fieldName)
          Liefert den Typ für ein Item.
 java.lang.String getUniversalID()
          Liefert die DocumentUNID des Document aus dem das DJCacheDocument ursprünglich erzeugt wurde.
 boolean hasItem(java.lang.String fieldName)
          Überprüft ob es das Feld (fieldname) gibt.
 void recycle()
          Die recycle Methode ist nur der Vollständigkeit (Mimik von lotus.domino.Document) halber vorhanden, muss aber keine Aufgaben erledigen.
 void removeItem(java.lang.String fieldName)
          Entfernt alle Items mit dem Namen fieldName
 void replaceItemValue(java.lang.String fieldName, java.lang.Object value)
          Ersetzt den Ihnalt des Feldes (fieldname) durch den Wert (value).
 java.lang.String toString()
          Gibt den Kompletten Inhalt des Dokuments als String zurück.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

DJCacheDocument

public DJCacheDocument(Document doc)
                throws NotesException
Erstellt aus einem lotus.domino.Document ein DJCacheDocument

Parameters:
doc -
Method Detail

appendItemValue

public void appendItemValue(java.lang.String fieldName,
                            java.lang.Object value)
Fügt dem Feld (fieldname) einen zusätzlichen Wert (value) hinzu. Existiert das Feld nicht, wird es erstellt. Befinden sich in einem Vector DateTime Objekte, werden diese als java.util.Date abgespeichert. Intern werden alle Elemente als Vector gespeichert, um die Mimik von lotus.domino.Document nachzuahmen. Besondere Eigenschaften, wie isAuthors oder isReaders werden zur Zeit nicht unterstützt.

Parameters:
value -

appendItemValue

public void appendItemValue(java.lang.String fieldName)
Erstellt ein Feld (feldname) falls es nicht existiert.

Parameters:
fieldName -

appendItemValue

public void appendItemValue(java.lang.String fieldName,
                            int value)
Fügt dem Feld (fieldname) einen zusätzlichen Wert (value) hinzu. Existiert das Feld nicht, wird es erstellt. ACHTUNG Notes Speichert intern Integer Variablen als Double.

Parameters:
fieldName -
value -

appendItemValue

public void appendItemValue(java.lang.String fieldName,
                            double value)
Fügt dem Feld (fieldname) einen zusätzlichen Wert (value) hinzu. Existiert das Feld nicht, wird es erstellt.

Parameters:
fieldName -
value -

getItemValue

public java.util.Vector getItemValue(java.lang.String fieldName)
Liefert den Inhalt eines Feldes (fieldname) das mehrere Werte enthält oder einen einzelnen Wert als Element eines neuen Vectors. Intern werden Werte nur als Vector gespeichert.

Returns:
See Also:
appendItemValue

getItemValueString

public java.lang.String getItemValueString(java.lang.String fieldName)
Liefert den Inhalt eine Feldes (fieldname) als String.

Returns:

getItemValueInteger

public int getItemValueInteger(java.lang.String fieldName)
Liefert den Inhalt eine Feldes (fieldname) als int. Imitiert dabei das Round Verhalten von Domino. (round (-1.5) = -2))

Returns:

getItemValueDouble

public double getItemValueDouble(java.lang.String fieldName)
Liefert den Inhalt eine Feldes (fieldname) als double.

Returns:

getItemValueDateTimeArray

public java.util.Vector getItemValueDateTimeArray(java.lang.String fieldName,
                                                  Session session)
                                           throws NotesException
Lädt einen gespeicherten Vector und versucht die enthaltenen Werte in DateTime umzuwandeln. Hierfür wird eine Session benötigt, um ein DateTime Objekt zu erzeugen, daher der zusätzliche Parameter. Alternativ kann getItemValue verwendet werden, dann wird ein Vector mit Date Elementen zurückgegeben. Beim Speichern von DateTime Items wird immer sowohl Datum als auch Zeit gespeichert. Reine Datums- (oder Zeit-) Items erhalten daher, anders als in lotus.domino.Document immer beide Komponenten (wg. der Umwandlung zwischen DateTime und Date).

Parameters:
fieldName -
session -
Returns:
Throws:
NotesException - - falls das Item nicht vom DateTime Typ ist

getType

public java.lang.String getType(java.lang.String fieldName)
Liefert den Typ für ein Item. Zur Zeit nur für DateTime Items implementiert. Ansonsten wird null zurückgegeben.

Parameters:
fieldName -
Returns:

getAllItemNames

public java.util.Vector getAllItemNames()
Gibt alle Item Namen des DJCacheDocument zurück. Exisitieren doppelte Items mit gleichem Namen, wird ein solcher Name lediglich einmal zurückgegeben.

Returns:

getParentDocumentUNID

public java.lang.String getParentDocumentUNID()
Liefert die DocumentUNID eines optional vorhandenen Mutterdokuments desjenigen Document aus dem das DJCacheDocument ursprünglich erzeugt wurde.

Returns:

getUniversalID

public java.lang.String getUniversalID()
Liefert die DocumentUNID des Document aus dem das DJCacheDocument ursprünglich erzeugt wurde.

Returns:

replaceItemValue

public void replaceItemValue(java.lang.String fieldName,
                             java.lang.Object value)
Ersetzt den Ihnalt des Feldes (fieldname) durch den Wert (value). Existiert das Feld nicht, wird es erstellt.

Parameters:
value -

removeItem

public void removeItem(java.lang.String fieldName)
Entfernt alle Items mit dem Namen fieldName

Parameters:
fieldName -

hasItem

public boolean hasItem(java.lang.String fieldName)
Überprüft ob es das Feld (fieldname) gibt.

Returns:

recycle

public void recycle()
Die recycle Methode ist nur der Vollständigkeit (Mimik von lotus.domino.Document) halber vorhanden, muss aber keine Aufgaben erledigen.


toString

public java.lang.String toString()
Gibt den Kompletten Inhalt des Dokuments als String zurück. Einzelne Felder werden durch kommatas getrennt.

Overrides:
toString in class java.lang.Object

getParentDatabaseFileName

public java.lang.String getParentDatabaseFileName()
Liefert den Dantenbanknamen der Datenbank in der sich das ursprüngliche lotus.domino.Document befand.

Returns:

getParentDatabaseFilePath

public java.lang.String getParentDatabaseFilePath()
Liefert den Dantenbankdateipfad der Datenbank in der sich das ursprüngliche lotus.domino.Document befand.

Returns:

getParentDatabase

public Database getParentDatabase(Session session)
                           throws NotesException
Liefert die Datenbank in der sich das ursprüngliche lotus.domino.Document befand.

Returns:
NotesException

getDocument

public Document getDocument(Session session)
                     throws NotesException
Lädt das Ursprüngliche lotus.domino.Document aus der Datenbank

Parameters:
session -
Returns:
Throws:
NotesException

createDocument

public Document createDocument(Database db)
                        throws NotesException
Erzeugt ein neues lotus.domino.Document mit den Items aus dem DJCacheDocuemnt. Das Document wird als Speicher Instanz zurückgegeben, ohne gespeichert zu sein. Besondere Eigenschaften, wie isAuthors oder isReaders in den einzelnen Items gehen verloren, da Sie zur Zeit nicht von appendItemValue unterstützt werden. Unterstützt werden die ItemTypen Text, Number, DateTime und Vectoren davon. Ursprüngliche Autoren- oder Leserfelder werden als normale Textfelder zurückgegeben.

Parameters:
db -
Returns:
Throws:
NotesException